package com.syx.client.service;

import com.syx.client.utils.DateUtils;
import com.syx.common.Message;
import com.syx.common.MessageType;

import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * @author 邵一鑫
 * @date 2024/1/14 13:07
 * 该类用于提供私聊、群聊等消息相关的服务
 */
public class MessageClientService {


    /**
     * 私聊
     * @param toUser
     * @param content
     */
    public void sendMessageToUser(String fromUser, String toUser, String content) {
        Message message = new Message();
        message.setMesType(MessageType.MESSAGE_COMM_MES); // 设置消息类型
        message.setFromUser(fromUser); // 设置发送内容
        message.setToUser(toUser); // 设置接收人
        message.setContent(content); // 设置消息内容
        message.setSendTime(DateUtils.getCurrentDate()); // 设置发送时间
        System.out.println(fromUser + "对 " + toUser + "说：" + content);
        try {
            // 获取 ObjectOutputStream
            ObjectOutputStream oos = new ObjectOutputStream(
                    ManageConnectServerThread.getClientConnectServerThread(fromUser).getSocket().getOutputStream());
            // 写入
            oos.writeObject(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 群发消息
     * @param fromUser
     * @param content
     */
    public void sendMessageToAll(String fromUser, String content) {
        Message message = new Message();
        message.setMesType(MessageType.MESSAGE_TO_ALL); // 设置消息类型
        message.setFromUser(fromUser); // 设置消息的发送者
        message.setContent(content); // 设置消息的内容
        message.setSendTime(DateUtils.getCurrentDate()); // 设置消息的发送时间
        System.out.println(fromUser + "对大家说：" + content);
        try {
            // 获取 ObjectOutputStream
            ObjectOutputStream oos = new ObjectOutputStream(
                    ManageConnectServerThread.getClientConnectServerThread(fromUser).getSocket().getOutputStream());
            // 写入
            oos.writeObject(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
